@
2年前 提问
1个回答

常用的动态分析技术有哪些

Ann
2年前

常用的动态分析技术有:

  • 动态执行监控:主要以软件调试、虚拟化等技术为基础,通过在受控环境中运行软件,利用系统提供的调试接口直接分析获取应用的动态执行信息。基于调试技术的动态执行监控方法主要利用操作系统和硬件提供的调试接口实现,往往需要修改被分析软件的二进制代码或设置特定的标志位等。基于虚拟化的分析方式通过在系统接口或虚拟硬件的层次构建分析引擎,在硬件层次提取信息。

  • 符号执行:在不执行目标软件的前提下,采用数值或逻辑公式表示软件代码指令的操作语义,然后通过对数值及逻辑公式进行推理和求解模拟软件执行过程来实现软件分析的技术。符号执行既可以对代码的全部语义信息进行分析,也可以只对部分语义信息进行分析,其分析过程包括构建符号化描述和模拟执行求解。符号化描述的构建方法由用户经验和分析目标决定,多采用逻辑公式;模拟执行求解通过制订推理规则,在符号化描述的基础上通过求解路径条件完成。符号执行分析方法在使用过程中往往作为辅助技术配合其他方法开展分析。

  • 动态污点传播分析:它是一种确定软件代码中指令与指令、指令与数据之间关系的有效手段,主要包括污点源标记、传播规则制订和污点传播计算3个方面的内容。污点源标记即确定被监控数据的起源,该数据往往是程序中的一段内存或函数的返回值;传播规则是根据程序指令和函数的语义,结合污点源数据的特点所制订的针对污点数据处理过程的推理规则;污点传播计算是在前面两方面工作的基础上,结合动态执行监控获取的动态过程信息,展开对于污点数据处理过程的分析,确定其中指令和指令、指令和数据之间的关系。动态污点传播分析被广泛应用于恶意软件分析、攻击代码检测等软件安全性分析研究中。

  • Fuzz分析方法:该方法通过向目标软件提供按照某种规则构造的外部输入,检测软件在处理这些输入时是否发生系统异常从而发现软件错误。传统的Fuzz分析方法并不猜测哪个数据会导致破坏,而是使用穷举的方式生成数据,通过将尽可能多的杂乱数据投入目标软件中以期触发潜在的程序异常。传统的Fuzz分析方法存在较高的盲目性,分析效率较低,所以当前的Fuzz分析方法往往与符号执行、动态污点传播分析等方式结合,根据已有的软件分析结果,采用一定的规则指导后续测试数据的生成过程,从而提高分析的效率和准确度。

  • 沙箱技术:沙箱是一种按照安全策略限制程序行为的执行环境。通常用于应用软件的安全性测试。经典的沙箱系统的实现途径一般是通过拦截系统调用、监视程序行为,然后依据用户定义的策略来控制和限制程序对计算机资源的使用。其主要工作原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。通过加载自身的驱动来保护底层数据,属于驱动级别的保护。